A “virtual machine” or a “VM” refers to a specific software-based implementation of a machine in a virtualization environment, in which the hardware resources of a real computer (e.g., CPU, memory, etc.) are virtualized or transformed into the underlying support for the fully functional virtual machine that can run its own operating system and applications on the underlying physical resources just like a real computer.
Virtualization works by inserting a thin layer of software directly on the computer hardware or on a host operating system. This layer of software contains a virtual machine monitor or “hypervisor” that allocates hardware resources dynamically and transparently. Multiple operating systems run concurrently on a single physical computer and share hardware resources with each other. By encapsulating an entire machine, including CPU, memory, operating system, and network devices, a virtual machine is completely compatible with most standard operating systems, applications, and device drivers. Most modern implementations allow several operating systems and applications to safely run at the same time on a single computer, with each having access to the resources it needs when it needs them.
Virtualization allows one to run multiple virtual machines on a single physical machine, with each virtual machine sharing the resources of that one physical computer across multiple environments. Different virtual machines can run different operating systems and multiple applications on the same physical computer.
One reason for the broad adoption of virtualization in modern business and computing environments is because of the resource utilization advantages provided by virtual machines. Without virtualization, if a physical machine is limited to a single dedicated operating system, then during periods of inactivity by the dedicated operating system the physical machine is not utilized to perform useful work. This is wasteful and inefficient if there are users on other physical machines which are currently waiting for computing resources. To address this problem, virtualization allows multiple VMs to share the underlying physical resources so that during periods of inactivity by one VM, other VMs can take advantage of the resource availability to process workloads. This can produce great efficiencies for the utilization of physical devices, and can result in reduced redundancies and better resource cost management.
How virtual machines are represented in the underlying storage depends on a virtual disk format used by the server or host on which the virtual machine is created. For example, ESXi and Hyper-V are two common formats that may be used in virtualization environments. A virtual machine created on a server or host running on the ESXi format will map to the virtual disk differently from a virtual machine created on a server or host running the Hyper-V format.
However, in many cases, it may be desirable to be able to move a virtual machine between servers or hosts running different virtual disk formats. For example, an organization may make a business decision to change the type of format used in their virtualization environment (e.g., from ESXi to Hyper-V, or vice versa), while desiring to be able to continue using their existing virtual disks. In some cases, a virtualization environment may contain a number of different servers running on different formats, wherein virtual machines may be moved between the different servers in the virtualization environment for load-balancing purposes.
Typically, in order to move a virtual machine between servers running different virtual disk formats, the virtual machine must be powered down. Once powered down, a conversion is performed on the virtual disk (e.g., reading the virtual disk data, performing a format conversion, and writing back the re-formatted virtual disk data). However, this type of conversion is typically time-consuming, and requires a large amount of storage overhead.
Therefore, there is a need for an improved approach for using virtual machines in a virtualization environment with different virtual disk formats.